#ifndef NANE_IINPUTDEVICESYSTEM_H
#   define  NANE_IINPUTDEVICESYSTEM_H

#   include "nane/core/ISubSystem.h"
#   include "nane/core/enum.h"
#   include "nane/WindowSystem/IWindowSystem.h"

namespace nane 
{
    struct EInputDevice
        : public Enum<EInputDevice, uint16>
    {
        enum domain
        {
            Unknown = 0,
            Keyboard,
            Mouse,
            Text,
            Joystick,
            Touchscreen,
            
            _max
        };
        NANE_ENUM_TYPE( EInputDevice, Enum, uint16 );
    };

    struct IInputDeviceSystem
        : public ISubSystem
    {
        virtual EInputDevice::raw_type GetDeviceType() = 0;
        virtual bool InitializeContext( IWindow::OSHandle _windowHandle ) = 0;
        virtual void ShutdownContext() = 0;
        virtual bool Poll( byte* _deviceNum, byte* _axis, int32* _value ) = 0;
    };

}   // namespace nane

#endif	// NANE_IINPUTDEVICESYSTEM_H
